#ifndef SCENE_H
#define SCENE_H
#include "objects.h"
#include "ppm.h"

typedef struct
{
	float3 ambient;
	float3 diffuse;
	float3 specular;
	float specular_exp;
	float reflect;
	float refract;
	float opacity;
	float width;
} surface;

typedef struct
{
	float4 cam_mat[4];
	float fovy;
	int x_res;
	int y_res;
	int max_bounces;
	int aa;
	int aa2;
	float px_size;
	color *out;
} camera;

typedef struct
{
	camera c;
	int n_ls;
	int n_sfs;
	int n_ms;
	int n_ts;
	int n_ss;
	int n_ps;
	light *l;
	float refract_idx;
	surface * sf;
	f_mesh *m;
	triangle *t;
	sphere *s;
	plane *p;
	char *infile;
	char *outfile;
	int grid_w;
	int grid_h;
} scene;

typedef struct
{
  float3 point;
  float3 direction;
} ray;

#endif
